<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 闭包的调用和特性 需要返回值，
        // function fn1(){
        //     //因为当前函数里的函数使用了这个变量，所以这个变量不会被清除，但这个变量会一直存在内存中，长期这样会导致内存泄漏
        //     // 内存得不到释放会让浏览器卡顿，甚至直接崩溃，我们可以在函数执行完后将变量赋值成null。
        //     var a=10;       

        //     return function fn2(){      //  可以把这个函数看成fn1()()最后的()
        //         console.log(a);
        //     }
        //     a=null
        // }
        // fn1()()  

        // 自调用函数
        // for (var i = 1; i <= 3; i++) {
        //     ((a) => {   //a形参
        //         setTimeout(() => {
        //             console.log(a);     //一秒打印一次
        //         }, a*1000)    
        //     })(i)   //i实参
        // }

    </script>
</body>

</html>